package com.ruoyi.business.service;

import java.util.List;
import com.ruoyi.business.domain.DailyTrainSeat;
import com.ruoyi.business.domain.DailyTrainStation;
import com.ruoyi.business.domain.dto.SeatCarriageDTO;
import com.ruoyi.business.domain.dto.SeatSellSegmentDTO;
import com.ruoyi.business.domain.dto.TrainSeatGroupDTO;
import com.ruoyi.common.core.page.TableDataInfo;

/**
 * 每日座位Service接口
 * 
 * @author ruoyi
 * @date 2025-03-06
 */
public interface IDailyTrainSeatService 
{
    /**
     * 查询每日座位
     * 
     * @param id 每日座位主键
     * @return 每日座位
     */
    public DailyTrainSeat selectDailyTrainSeatById(Long id);

    /**
     * 查询每日座位列表
     * 
     * @param dailyTrainSeat 每日座位
     * @return 每日座位集合
     */
    public List<DailyTrainSeat> selectDailyTrainSeatList(DailyTrainSeat dailyTrainSeat);

    /**
     * 新增每日座位
     * 
     * @param dailyTrainSeat 每日座位
     * @return 结果
     */
    public int insertDailyTrainSeat(DailyTrainSeat dailyTrainSeat);

    /**
     * 修改每日座位
     * 
     * @param dailyTrainSeat 每日座位
     * @return 结果
     */
    public int updateDailyTrainSeat(DailyTrainSeat dailyTrainSeat);

    /**
     * 批量删除每日座位
     * 
     * @param ids 需要删除的每日座位主键集合
     * @return 结果
     */
    public int deleteDailyTrainSeatByIds(Long[] ids);

    /**
     * 删除每日座位信息
     * 
     * @param id 每日座位主键
     * @return 结果
     */
    public int deleteDailyTrainSeatById(Long id);

    /**
     * 按车次和车厢分组查询座位信息
     *
     * @param dailyTrainSeat 查询参数
     * @return 分组后的座位数据
     */
    List<TrainSeatGroupDTO> selectDailyTrainSeatGroupByTrainAndCarriage(DailyTrainSeat dailyTrainSeat);

    /**
     * 根据日期和车次查询车站信息
     *
     * @param date 日期
     * @param trainCode 车次
     * @return 车站列表
     */
    public List<SeatSellSegmentDTO> getSeatSellDetail(String date, String trainCode, Long seatId);

    /**
     * 按列车分页查询座位列表
     *
     * @param dailyTrainSeat 查询条件
     * @return 分页结果
     */
    TableDataInfo listByTrainPagination(DailyTrainSeat dailyTrainSeat, Integer pageNum, Integer pageSize);

}
